
#include <p18f2550.h>
#include <delays.h>
#include <xc.h>
//fusibles para el pic
# pragma config FOSC =XT_XT , FCMEN =OFF , IESO =OFF , CPUDIV = OSC1_PLL2
# pragma config PWRT =ON , BOR =OFF , BORV =0, WDT =OFF , WDTPS =32768
# pragma config MCLRE =ON , LPT1OSC =OFF , PBADEN =OFF , CCP2MX = OFF
# pragma config STVREN =OFF , LVP =OFF , XINST =OFF , DEBUG = OFF
# pragma config CP0 =OFF , CP1 =OFF , CP2 =OFF , CPB =OFF , CPD = OFF
# pragma config WRT0 =OFF , WRT1 =OFF , WRT2 = OFF
# pragma config WRTB =OFF , WRTC =OFF , WRTD = OFF
# pragma config EBTR0 =OFF , EBTR1 =OFF , EBTR2 =OFF , EBTRB = OFF


char teclapulsada=0;
void main (void)
{
    ADCON1=15;
    TRISA=0x00; //SALIDA , da el valor de la tecla pulsada
    TRISB=0xF0; // RB7-RB4 = ENTRADAS // RBO-RB3= SALIDAS
    PORTB=0;//LIMPIA
    PORTA=0;//LIMPIA

    while(1)
    {
           leertecla( ) ; // LLAMA FUNCION
           PORTA=teclapulsada;// ASIGNO A PORTA EL VALOR DE "TECLA PULSADA"
           Delay10KTCYx(50);

    }

}
int leertecla( ) {
            PORTBbits.RB0=0 ;// HABILITA PIN RBO
            if(PORTBbits.RB4==0){  teclapulsada='1';}
            else if(PORTBbits.RB5==0){ teclapulsada='4';}
            else if(PORTBbits.RB6==0){ teclapulsada='7';}
            else if(PORTBbits.RB7==0){teclapulsada='0';}
            Delay10KTCYx(50);
            PORTBbits.RB1=0 ;// HABILITA PIN RB1
            if(PORTBbits.RB4==0){ teclapulsada='2';}
            else if(PORTBbits.RB5==0){ teclapulsada='5';}
            else if(PORTBbits.RB6==0){ teclapulsada='8';}
            else if(PORTBbits.RB7==0){teclapulsada='0';}
            Delay10KTCYx(50);
            PORTBbits.RB2=0 ;// HABILITA PIN RB2
            if(PORTBbits.RB4==0){ teclapulsada='3';}
            else if(PORTBbits.RB5==0){ teclapulsada='6';}
            else if(PORTBbits.RB6==0){ teclapulsada='9';}
            else if(PORTBbits.RB7==0){teclapulsada='0';}
            Delay10KTCYx(50);
            PORTBbits.RB3=0 ;// HABILITA PIN RB3
            if(PORTBbits.RB4==0){ teclapulsada='0';}
            else if(PORTBbits.RB5==0){ teclapulsada='0';}
            else if(PORTBbits.RB6==0){ teclapulsada='0';}
            else if(PORTBbits.RB7==0){teclapulsada='0';}
            Delay10KTCYx(50);
            
    return;
}


